home *** CD-ROM | disk | FTP | other *** search
/ Software Vault: The Gold Collection / Software Vault - The Gold Collection (American Databankers) (1993).ISO / cdr47 / wasm223.zip / STACK.ASM < prev    next >
Assembly Source File  |  1993-05-04  |  2KB  |  64 lines

  1. ;*********************************;
  2. ; WASM Stack Allocation           ;
  3. ; By Eric Tauck                   ;
  4. ;                                 ;
  5. ; Defines:                        ;
  6. ;                                 ;
  7. ;   StkAll  allocate stack memory ;
  8. ;   StkRel  release stack memory  ;
  9. ;*********************************;
  10.  
  11. ;========================================
  12. ; Macro to allocate memory from the
  13. ; stack.
  14. ;
  15. ; In: m1..m5= bytes to allocate; v1..v5=
  16. ;     variables to store address.
  17.  
  18. StkAll  MACRO   v1, m1, v2, m2, v3, m3, v4, m4, v5, m5
  19.         IF      (TYPE(m1)=TYPE())=0
  20.         sub     sp, m1
  21.         mov     v1, sp
  22.         ENDIF
  23.         IF      (TYPE(m2)=TYPE())=0
  24.         sub     sp, m2
  25.         mov     v2, sp
  26.         ENDIF
  27.         IF      (TYPE(m3)=TYPE())=0
  28.         sub     sp, m3
  29.         mov     v3, sp
  30.         ENDIF
  31.         IF      (TYPE(m4)=TYPE())=0
  32.         sub     sp, m4
  33.         mov     v4, sp
  34.         ENDIF
  35.         IF      (TYPE(m5)=TYPE())=0
  36.         sub     sp, m5
  37.         mov     v5, sp
  38.         ENDIF
  39.         ENDM
  40.  
  41. ;========================================
  42. ; Macro to release memory allocated from
  43. ; the stack.
  44. ;
  45. ; In: m1..m5= bytes to deallocate.
  46.  
  47. StkRel  MACRO   m1, m2, m3, m4, m5
  48.         IF      TYPE(m1)=TYPE(bx)
  49.         mov     sp, m1
  50.         ELSE
  51.         IF      TYPE(m2)=TYPE()
  52.         add     sp, m1
  53.         ELSEIF  TYPE(m3)=TYPE()
  54.         add     sp, (m1) + (m2)
  55.         ELSEIF  TYPE(m4)=TYPE()
  56.         add     sp, (m1) + (m2) + (m3)
  57.         ELSEIF  TYPE(m5)=TYPE()
  58.         add     sp, (m1) + (m2) + (m3) + (m4)
  59.         ELSE
  60.         add     sp, (m1) + (m2) + (m3) + (m4) + (m5)
  61.         ENDIF
  62.         ENDIF
  63.         ENDM
  64.